import Vue from 'vue'
import Vuex from 'vuex'

import { getUserInfo } from '@/api/user.js'

// 引入本地存储工具
import {
  setStorageToken,
  getStorageToken,
  removeStorageToken
} from '@/untils/storage'

Vue.use(Vuex)
const state = {
  // 保存成功登陆的token信息
  // 先去本地存储看有无token数据,有的话就取出来给state的token对象,没有的话就是空对象
  token: getStorageToken(),
  userInfo: {}
}
const mutations = {
  setToken(state, value) {
    state.token = value

    // 将token永久存储起来
    // 本地存储token值
    setStorageToken(value)
  },

  //   清空本地存储的 token值
  removeLocalStorageToken() {
    // 清空vuex 仓库的 token信息
    state.token = {}
    // 清空本地储存的token信息
    removeStorageToken()
  },

  // 获取用户个人信息存放到vuex中
  getUserProfile(state, value) {
    state.userInfo = value
  }
}
const actions = {
  async AsyncGetUserInfo(context) {
    // 发送请求获取数据(用户个人信息)
    const res = await getUserInfo()
    // 把用户信息存储到vuex中
    // console.log(res.data)
    context.commit('getUserProfile', res.data)
  }
}
const getters = {}

export default {
  // 命名空间
  namespaced: true,
  state,
  mutations,
  actions,
  getters
}
